from flask import Flask,request,jsonify
import json,os
# 实例化对象
app = Flask(__name__)
# 加载配置文件
from config import Config
app.config.from_object(Config)
# 跨域配置
from flask_cors import CORS
CORS(app)
# 实现orm，对相关希映射
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

# 创建分类表
class Cate(db.Model):
    __tablename__='cate'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    name = db.Column(db.String(50),unique=True) # 名称唯一
    level = db.Column(db.Integer,default=1)     # 等级
    pid =  db.Column(db.Integer,default=0)      # 顶级的父id为0

# 创建课程表
class Course(db.Model):
    __tablename__='course'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    name = db.Column(db.String(50),unique=True)             # 名称唯一
    description = db.Column(db.Text,default='')             # 描述
    tname = db.Column(db.String(50),default='')             # 讲师
    pic = db.Column(db.String(255),default='')              # 图片
    vedios = db.Column(db.String(255),default='')           # 视频['','']
    status = db.Column(db.Integer,default=1)                # 审核状态
    reason=db.Column(db.String(255),default='')             # 失败原因
    cid =  db.Column(db.Integer,db.ForeignKey('cate.id'))   # 所属分类

# db.create_all()

# 分类接口（增删改查）
@app.route('/cateM',methods=['POST','GET','DELETE'])
def cateM():
    if request.method =="POST":
        #获取参数
        data = request.data
        #对参数进行验证，如果有json.loads()
        if data:
            data = json.loads(data)
        #如果没有去form中获取
        else:
            data = request.form
        #添加
        # 判断是添加还是修改
        try:
            id = data['id']
        except:
            id = 0
        if id:
            # 修改
            cate = Cate.query.filter_by(id=id).update({"name":data['name']})
        else:
            cate = Cate(name=data['name'])
            db.session.add(cate)
        #提交
        db.session.commit()
        #返回结果
        return jsonify({"code":200})
    elif request.method == "GET":
        # 查询所有数据
        # 1.获取所有数据
        # 分页
        page = int(request.args.get('page'))
        # 每页显示两条
        page_size = 3
        # cates = Cate.query.all()
        start = (page-1)*page_size
        cates = Cate.query.offset(start).limit(page_size)
        # 2.把数据封装成列表
        list = []
        # 判断有分类
        if cates:
            # 遍历加到列表中
            for i in cates:
                dict = {'id':i.id,'name':i.name}
                list.append(dict)
        # 3.返回json
        # 获取一共有多少
        total = Cate.query.count()
        return jsonify({"code":200,"list":list,"total":total})
    elif request.method == "DELETE":
         #获取id
        id = request.args.get('id')
        if not id:
            return jsonify({"code":10010})
        #根据id删除
        Cate.query.filter_by(id=id).delete()
        db.session.commit()
        #返回结果
        return jsonify({'code':200})


# 根据分类id获取分类
@app.route('/getCateByid')
def getCateByid():
    # 获取id
    id = request.args.get('id')
    # 获取id查询分类信息
    cate = Cate.query.filter_by(id=id).first()
    # 数据重组dict
    dict = {'id':cate.id,'name':cate.name}
    # 返回结果
    return jsonify({'code':200,'cate':dict})

#图片上传
@app.route('/upload',methods=['POST'])
def upload():
    file = request.files['file']
    file.save(os.path.join('./static/upload/',file.filename))
    return jsonify({"code":200,'pic':file.filename})

if __name__=="__main__":
    app.run(debug=True)

